package com.iwhalecloud.citybrain.flow.platform.manager.domain.repository;

import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.ModelTaskCandidateSettings;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.ModelTaskCandidateSettingsDomain;

import java.util.List;

/**
 * @Description 流程任务候选人设置资源库
 * @author liujinjian
 * @date 2021-10-20
 * @version 1.0
 */
public interface FlowTaskCandidateSettingsRepository {

    /**
     * @Description 根据主键删除候选人信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param id
     * @version 1.0
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * @Description 插入候选人设置信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param record
     * @version 1.0
     * @return
     */
    int insert(ModelTaskCandidateSettings record);

    /**
     * @Description 插入选中的候选者信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param record
     * @version 1.0
     * @return
     */
    int insertSelective(ModelTaskCandidateSettings record);

    /**
     * @Description 根据主键查询候选人信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param id
     * @version 1.0
     * @return
     */
    ModelTaskCandidateSettings selectByPrimaryKey(Long id);

    /**
     * @Description 更新选中的候选人信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param record
     * @version 1.0
     * @return
     */
    int updateByPrimaryKeySelective(ModelTaskCandidateSettings record);

    /**
     * @Description 根据主键更新Blob内容信息
     * @author liujinjian
     * @date 2021-10-20
     * @param record
     * @version 1.0
     * @return
     */
    int updateByPrimaryKeyWithBLOBs(ModelTaskCandidateSettings record);

    /**
     * @Description 根据主键更新流程任务候选人信息记录
     * @author liujinjian
     * @date 2021-10-20
     * @param record
     * @version 1.0
     * @return
     */
    int updateByPrimaryKey(ModelTaskCandidateSettings record);

    /**
     * @Description 保存模型或自定义配置信息
     * @author liujinjian
     * @date 2021-10-20
     * @param modelTaskCandidateSettingsDomain
     * @version 1.0
     * @return
     */
    boolean save(ModelTaskCandidateSettingsDomain modelTaskCandidateSettingsDomain);

    /**
     * @Description 添加任务部署候选人设置信息
     * @author liujinjian
     * @date 2021-10-20
     * @param modelTaskCandidateSettings
     * @version 1.0
     * @return
     */
    boolean addTaskDeployCandidateSettingsInfo(ModelTaskCandidateSettings modelTaskCandidateSettings);

    /**
     * @Description 根据部署ID和节点编号获取模型任务候选人设置信息集合
     * @author liujinjian
     * @date 2021-10-20
     * @param deployId
     * @param nodeCode
     * @return List<ModelTaskCandidateSettings>
     */
    List<ModelTaskCandidateSettings> listModelTaskCandidateSettings(String deployId, String nodeCode);

    /**
     * @Description 根据部署ID和节点编号获取模型任务候选人设置信息集合
     * @author liujinjian
     * @date 2021-10-20
     * @param deployId
     * @param nodeCode
     * @return List<ModelTaskCandidateSettingsDomain>
     */
    List<ModelTaskCandidateSettingsDomain> listModelTaskCandidateSettingsByDeployIdAndNodecode(String deployId, String nodeCode);

    /**
     * @Description 根据部署ID和节点编号及是否已选中操作标识获取模型任务候选人设置信息集合
     * @author liujinjian
     * @date 2021-11-21
     * @param deployId
     * @param nodeCode
     * @param isPick
     * @return
     */
    public List<ModelTaskCandidateSettingsDomain> getModelTaskCandidateSettingsList(String deployId, String nodeCode, String isPick);
}